﻿using System;
using System.Collections.Generic;
using System.Text;

namespace TestKontrole2 {
    public class Uvjet {

        private const string formatDatum1 = "yyyy-MM-dd HH:mm tt";
        private int id;
        private TipUvjeta tipUvjeta;
        private string izraz;

        public Uvjet(){
        }

        public Uvjet(string izraz) {
            this.Izraz = izraz;
            createTip(izraz);
        }
        public Uvjet(string izraz, TipUvjeta tip) : this(izraz) {
            if (this.TipUvjeta != tip)
                throw new iznimke.UvjetException("Izraz ne odgovara odabranom tipu uvjeta");
        }

        virtual public TipUvjeta TipUvjeta{
            get { return tipUvjeta; }
            set { tipUvjeta = value; }
        }

        virtual public string Izraz{
            get { return izraz; }
            set { izraz = value; }
        }

        virtual public int Id{
            get { return id; }
            set { id = value; }
        }

        private void createTip(string izraz) {
            DateTime datum;
            try {
                datum = DateTime.Parse(izraz);
                TipUvjeta = TipUvjeta.byDatum;
                return;
            } catch (FormatException) {}
            int id;
            try {
                id = Int32.Parse(izraz);
                TipUvjeta = TipUvjeta.byID;
                return;
            } catch (FormatException) {}
            TipUvjeta = TipUvjeta.byNaziv;
        }

        public TipUvjeta getTip() {
            return TipUvjeta;
        }

        public string getIzraz() {
            return Izraz;
        }

        // override object.Equals
        public override bool Equals(object obj) {
            if (obj == null || GetType() != obj.GetType()) {
                return false;
            }
            if ((TipUvjeta.Equals(((Uvjet)obj).getTip()))
                && (Izraz.Equals(((Uvjet)obj).getIzraz())))
                return true;
            else
                return false;
        }

        // override object.GetHashCode
        public override int GetHashCode() {
            return TipUvjeta.GetHashCode() + Izraz.GetHashCode();
        }
    }
}
